#include "curlResquest.h"

//发送get请求到url
void sendGetRequest(char* url,size_t (*fn)(void*, size_t, size_t , void*))
{
    //初始化一个curl
    CURL *curl = curl_easy_init();

    //给curl设置一些属性 --> 目标地址、回调函数、请求参数、发送文件
    curl_easy_setopt(curl, CURLOPT_URL, url);

    //发送请求参数
    // curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, fn);

    //设置回调函数
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, fn);

    //发送请求
    CURLcode code = curl_easy_perform(curl);
    if (code != CURLE_OK)
    {
        fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(code));
    }

    //清理空间
    curl_easy_cleanup(curl);
    
}

//发送post请求到url
void sendPostRequest(char* url,char*parmStr,size_t (*fn)(void*, size_t, size_t , void*))
{
    //初始化一个curl
    CURL *curl = curl_easy_init();

    //给curl设置一些属性 --> 目标地址、回调函数、请求参数、发送文件
    curl_easy_setopt(curl, CURLOPT_URL, url);

    //发送请求参数
    curl_easy_setopt(curl, CURLOPT_POSTFIELDS, parmStr);

    //设置回调函数
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, fn);

    //发送请求
    CURLcode code = curl_easy_perform(curl);
    if (code != CURLE_OK)
    {
        fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(code));
    }

    //清理空间
    curl_easy_cleanup(curl);
}

int downloadRes(char *url, char *saveFilePath)
{
    //保存的文件路径
    FILE *save_file = fopen(saveFilePath, "wb");
    //初始化
    CURL *curl = curl_easy_init();
    if (curl)
    {
        //设置参数
        curl_easy_setopt(curl, CURLOPT_URL, url);   
        //存放文件
        curl_easy_setopt(curl, CURLOPT_FILE, save_file);  
        //发送请求
        CURLcode res = curl_easy_perform(curl);
        //判断是否发送成功
        if (res != CURLE_OK)
        {
            fprintf(stderr, "curl_easy_perform() failed:%s\n", curl_easy_strerror(res));
            return -1;
        }
        curl_easy_cleanup(curl);
    }
    return 0;
}